package membresia.em.financeiro;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import membresia.bean.financeiro.Saida;
import membresia.service.Service;

public class SaidaEm {

    /**
     * Método que persiste um objeto Saida no Banco
     */
    public static void cadastraSaida(Saida p) {
        // persiste no banco de dados
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.persist(p);
        em.flush();
        em.getTransaction().commit();
        em.close();

    }

    /**
     * Método que Atualiza um Objeto Saida
     */
    public static void atualizaSaida(Saida p) {
        // persiste no banco de dados
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.merge(p);
        em.flush();
        em.getTransaction().commit();
        em.close();
    }

    /**
     * Método busca uma Saida pelo ID
     *
     * @return Saida
     */
    public static Saida findById(int id) {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        Saida p = em.find(Saida.class, id);
        em.getTransaction().commit();
        em.close();
        return p;
    }

    /**
     * Método que lista todas as Saidas
     */
    @SuppressWarnings("unchecked")
    public static List<Saida> findAll() {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        Query q = em.createQuery("select p from Saida p ");
        List<Saida> Saidas = q.getResultList();
        em.flush();
        em.getTransaction().commit();
        em.close();
        return Saidas;
    }

    /**
     * Método que lista todas as Saidas
     */
    @SuppressWarnings("unchecked")
    public static List<Saida> findByNome(String nome) {
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        Query q = em.createQuery("select p from Saida p where p.descricao like '%"
                + nome + "%'");
        List<Saida> Saidas = q.getResultList();
        em.flush();
        em.getTransaction().commit();
        em.close();
        return Saidas;
    }

    /**
     * Método de Exclusão de Saida
     */
    public static void excluirSaida(int id) {
        // exclui uma Saida por id
        Saida Saida = findById(id);
        // excluir a Saida
        EntityManager em = Service.getEntityManagerFactory();
        em.getTransaction().begin();
        em.remove(em.getReference(Saida.class, Saida.getId()));
        em.flush();
        em.getTransaction().commit();
        em.close();
    }
}